package org.dxy.infrastructure.persistent.db.mybatispuls.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.dxy.infrastructure.persistent.db.mybatispuls.po.query.SubstituteMaterialViewPo;

import java.util.List;

/**
 * 替代料视图Mapper
 * @author dxy
 * @createTime 2025/9/13
 */
@Mapper
public interface SubstituteMaterialViewMapper extends BaseMapper<SubstituteMaterialViewPo> {
    
    /**
     * 分页查询替代料列表
     */
    Page<SubstituteMaterialViewPo> selectPageWithCondition(
            Page<SubstituteMaterialViewPo> page,
            @Param("query") SubstituteMaterialViewPo query);
    
    /**
     * 根据MBOM ID查询替代料列表
     */
    List<SubstituteMaterialViewPo> selectByMbomId(@Param("mbomId") Long mbomId);
    
    /**
     * 根据MBOM项ID查询替代料列表
     */
    List<SubstituteMaterialViewPo> selectByMbomItemId(@Param("mbomItemId") Long mbomItemId);
    
    /**
     * 根据状态查询替代料列表
     */
    List<SubstituteMaterialViewPo> selectByStatus(@Param("status") String status);
    
    /**
     * 根据主料编码查询替代料列表
     */
    List<SubstituteMaterialViewPo> selectByMainMaterialCode(@Param("mainMaterialCode") String mainMaterialCode);
    
    /**
     * 根据替代料编码查询替代料列表
     */
    List<SubstituteMaterialViewPo> selectBySubstituteMaterialCode(@Param("substituteMaterialCode") String substituteMaterialCode);
    
    /**
     * 查询可用的替代料（状态为ACTIVE且在有效期内）
     */
    List<SubstituteMaterialViewPo> selectAvailableSubstitutes(@Param("mbomItemId") Long mbomItemId);
}